package com.ruoyi.system.service.impl;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.util.Date;
import java.util.List;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.system.domain.Jl;
import com.ruoyi.system.domain.Ygrecord;
import com.ruoyi.system.domain.bo.CountNumBo;
import com.ruoyi.system.domain.bo.DataBo;
import com.ruoyi.system.domain.bo.YgBo;
import com.ruoyi.system.domain.vo.DataVo;
import com.ruoyi.system.domain.vo.YgVo;
import com.ruoyi.system.mapper.YgMapper;
    import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.system.service.IJlService;
import com.ruoyi.system.service.IYgrecordService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.system.mapper.YgMapper;
import com.ruoyi.system.domain.Yg;
import com.ruoyi.system.service.IYgService;
import org.springframework.transaction.annotation.Transactional;


/**
 * 【请填写功能名称】Service业务层处理
 *
 * @author ruoyi
 * @date 2025-04-25
 */
@Service
public class YgServiceImpl extends ServiceImpl<YgMapper, Yg> implements IYgService
{
    @Autowired
    private YgMapper ygMapper;
    @Autowired
    private IJlService jlService;
    @Autowired
    private IYgrecordService ygrecordService;

    /**
     * 查询【请填写功能名称】
     *
     * @param ygId 【请填写功能名称】主键
     * @return 【请填写功能名称】
     */
    @Override
    public YgBo selectYgByYgId(Long ygId)
    {
        return ygMapper.selectYgByYgId(ygId);
    }

/**
 * 查询【请填写功能名称】列表
 *
 * @param ygVo 【请填写功能名称】
 * @return 【请填写功能名称】
 */

@Override
public List<YgBo> selectYgList(YgVo ygVo)
{
    return ygMapper.selectYgList(ygVo);
}


    @Override
    public List<CountNumBo> selectcountNum(YgVo ygVo)
    {
        return ygMapper.selectcountNum(ygVo);
    }

    @Override
    public List<CountNumBo> selectcountNumOne(YgVo ygVo)
    {
        return ygMapper.selectcountNumOne(ygVo);
    }


    @Override
    public List<CountNumBo> selectcountNums(Long [] qdkbIds)
    {
        return ygMapper.selectcountNums(qdkbIds);
    }

    @Override
    public List<DataBo> selectcountNumTwo(DataVo dataVo){
        return ygMapper.selectcountNumTwo(dataVo);
    }
    @Override
    public List<DataBo> selectcountNumTwoF(DataVo dataVo){
        return ygMapper.selectcountNumTwoF(dataVo);
    }
    @Override
    public Yg findTelYg(String tel){
        return ygMapper.findTelYg(tel);
    }



    /**
     * 新增【请填写功能名称】
     *
     * @param yg 【请填写功能名称】
     * @return 结果
     */
    @Override
    @Transactional
    public int insertYg(Jl jl, Yg yg, YgVo ygVo)
    {

        if(jl.getJlId()==null){
            jlService.insertJl(jl);
        }

        Yg dbYg = this.findTelYg(ygVo.getTel());
        if(dbYg!=null && dbYg.getStatusTwo().equals("6")){
            throw new RuntimeException("候选人目前在职，请联系员工所属PM");
        }
        if(dbYg!=null && dbYg.getQdkbId().equals(yg.getQdkbId())){
            throw new RuntimeException("候选人在该职位已经有人选，且未被淘汰");
        }
        if(dbYg!=null && !dbYg.getQdkbId().equals(yg.getQdkbId())){
            throw new RuntimeException("候选人已被放入其他职位，且未被淘汰");
        }
        String ygNo="YG"+IdWorker.getIdStr();
        yg.setJlId(jl.getJlId());
        yg.setYgNo(ygNo);
        int i = ygMapper.insertYg(yg);
        Ygrecord ygrecord=new Ygrecord();
        ygrecord.setYgId(yg.getYgId());
        ygrecord.setUserId(yg.getUserId());
        ygrecord.setUserName(ygVo.getUserName());
        ygrecord.setStatusOne("1");
        ygrecord.setStatusTwo("1");
        ygrecord.setStatusThree("1");
        ygrecordService.insertYgrecord(ygrecord);
        return i;
    }

    /**
     * 修改【请填写功能名称】
     *
     * @param ygVo 【请填写功能名称】
     * @return 结果
     */
    @Override
    public int updateYg(YgVo ygVo)
    {
        ygVo.setUpdateTime(DateUtils.getNowDate());
        return ygMapper.updateYg(ygVo);
    }

    /**
     * 批量删除【请填写功能名称】
     *
     * @param ygIds 需要删除的【请填写功能名称】主键
     * @return 结果
     */
    @Override
    public int deleteYgByYgIds(Long[] ygIds)
    {
        return ygMapper.deleteYgByYgIds(ygIds);
    }

    /**
     * 删除【请填写功能名称】信息
     *
     * @param ygId 【请填写功能名称】主键
     * @return 结果
     */
    @Override
    public int deleteYgByYgId(Long ygId)
    {
        return ygMapper.deleteYgByYgId(ygId);
    }
}
